home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / ai.prl / mike1.exe / CARFWD.KB < prev    next >
Encoding:
Text File  |  1990-09-14  |  1.6 KB  |  52 lines

  1. /* 'Deep causal reasoning' diagnosis of car starting problems,
  2. based on Luc Steels article "Components of Expertise" in AI Magazine,
  3. Vol. 11, No. 2, 1990. */
  4.  
  5. /*
  6. Forward chaining version (see CARBKWD.KB for backward chaining version)
  7. */
  8. rule init forward
  9.   if start
  10.   then
  11.    remove start &
  12.    add [transmission-ok, prereq, engine-starts] &
  13.    add [starter-turning, prereq, engine-starts] &
  14.    add [plug1-fires, prereq, engine-starts] &
  15.    add [plug2-fires, prereq, engine-starts] &
  16.    add [plug3-fires, prereq, engine-starts] &
  17.    add [plug4-fires, prereq, engine-starts] &
  18.    add [cable1-ok, prereq, plug1-fires] &
  19.    add [cable2-ok, prereq, plug2-fires] &
  20.    add [cable3-ok, prereq, plug3-fires] &
  21.    add [cable4-ok, prereq, plug4-fires] &
  22.    add [coil-powered, prereq, X-fires] &
  23.    add [starter-powered, prereq, starter-turning] &
  24.    add [battery-charged, prereq, starter-powered] &
  25.    add [battery-charged, prereq, coil-powered] &
  26.    add [need_to_investigate, engine-starts].
  27.  
  28. rule found_culprit forward
  29.    if
  30.      [observation, F, n]  &
  31.      -- [Anything, prereq, F]
  32.    then
  33.      announce [F,' is a source of difficulty', nl,
  34.                  'so you should fix it and try again.'] &
  35.      halt.  /* single fault assumption! */
  36.  
  37. rule diagnose forward
  38.    if
  39.      [observation, X, n] &  /* 'n' is a negative finding */
  40.      [P, prereq, X]
  41.    then
  42.      add [need_to_investigate, P].
  43.  
  44. rule ask_it forward
  45.      if
  46.        [need_to_investigate,X]
  47.      then
  48.        query ['Is it the case that',X,'(y./n.)'] receives_answer Ans &
  49.        add [observation,X,Ans] &
  50.        remove [need_to_investigate, X].
  51.  
  52.